package br.com.tcc.systemdx.domain;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.Lob;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.validator.Length;
import org.hibernate.validator.NotEmpty;

import br.com.tcc.systemdx.domain.enumtypes.ProbabilidadeSimbolica;

@Entity
@Table(name="descricaodoenca")
public class DescricaoDoenca extends BaseEntity {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7090665806726662273L;
	
	@NotEmpty
	@Length(max = 200)
	private String titulo;
	
	@Lob
	@Length(max = 2000)
	private String descricao;
	
	@NotEmpty
	@Length(max = 6)
	private String CID;
	
	@Enumerated
	@Column(name = "probabilidade")
	private ProbabilidadeSimbolica probabilidadeOcorrencia;
	
	@OneToMany(mappedBy = "doenca", cascade = { CascadeType.MERGE,
			CascadeType.PERSIST }, fetch = FetchType.LAZY)
	private List<Sintoma> sintomas;
	
	@OneToMany(mappedBy = "doenca", cascade = { CascadeType.MERGE,
			CascadeType.PERSIST }, fetch = FetchType.LAZY)
	private List<FatorRelevante> fatoresRelevantes;

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getCID() {
		return CID;
	}

	public void setCID(String codCID) {
		this.CID = codCID;
	}

	public ProbabilidadeSimbolica getProbabilidadeOcorrencia() {
		return probabilidadeOcorrencia;
	}

	public void setProbabilidadeOcorrencia(
			ProbabilidadeSimbolica probabilidadeOcorrencia) {
		this.probabilidadeOcorrencia = probabilidadeOcorrencia;
	}

	public List<Sintoma> getSintomas() {
		return sintomas;
	}

	public void setSintomas(List<Sintoma> sintomas) {
		this.sintomas = sintomas;
	}

	public List<FatorRelevante> getFatoresRelevantes() {
		return fatoresRelevantes;
	}

	public void setFatoresRelevantes(List<FatorRelevante> fatoresRelevantes) {
		this.fatoresRelevantes = fatoresRelevantes;
	}
	
	@Override
	public String toString() {
		if (this.titulo != null) {
			StringBuilder sb = new StringBuilder();
			sb.append(titulo);
			sb.append("<br/>");
			return sb.toString();
		}
		return super.toString();
	}
	

}
